Manejo de Excepciones

Descripcion

Como manejar excepciones en C# y como crear nuestras propias excepciones.

Manejo de excepciones

Para manejar exceciones en C# lo hacemos con la siguiente estructura:

try
{
    //Codigo que puede lanzar una excepción
}
catch (Exception)
{
    //Manejo de la exepción
}

Podemos hacer una prueba con el siguiente código:

try
{
    int cero = 0;
    int numero = 5 / cero;
    Console.WriteLine("Despues de la excepción");
}
catch (Exception)
{
    Console.WriteLine("Division entre cero");
}

Console.WriteLine("Despues del catch");

Al intentar dividir entre 0 se lanzará una excepción, la ejecución del código es la siguiente:

Flujo de ejecución

El código que hay dentro del bloque try se ejecutará de forma normal hasta que se lance una excepción, en caso de que no se lance ninguna excepción el código continuará su ejecución hasta el final del bloque try y el catch no se llegará a ejecutar nunca.

Cuando se lanza una excepción dentro del bloque try la ejecución se para en ese punto y se salta directamente al bloque catch una vez finalizado el bloque catch la ejecución continua justo despues del catch, NO se vuelve al punto donde se lanzo la excepción, por eso en el ejemplo anterior nunca se llega a ejecutar el código:

Console.WriteLine("Despues de la excepción");
Declaración de excepciones propias

Para declarar nuestras propias excepciones tenemos que declarar una clase que herede de Exception:

public class NuevaExcepcion : Exception
{
    public NuevaExcepcion() : base() { }
    public NuevaExcepcion(string mensaje) : base(mensaje) { }
    public NuevaExcepcion(string mensaje, Exception innerException) : base(mensaje, innerException) { }
}

No es es imprescindible pero es aconsejable declarar esos tres constructores para cada una de las nuevas excepciones que declaremos.

Para usar nuestra nueva excepción lo haríamos de la siguiente manera:

using ExceptionExample;

try
{
    throw new NuevaExcepcion();

    Console.WriteLine("Despues de la excepción");
}
catch (NuevaExcepcion)
{
    Console.WriteLine("NuevaExcepción lanzada");
}

Console.WriteLine("Despues del catch");
Tags

C# | Excepcion